<?php
namespace Admin\Controller;

use Common\Util\Page;
use Common\Util\UploadHandler;
use Common\Controller\AdminbaseController;
use Think\Model;

class ArticleController extends AdminbaseController  {

	public function index() {
		$ArticleModel = M('article');
		
		$key = I('get.key');
		$where = array('status' => 1);
		if ($key) {
			$where ['title'] = array('like', '%'.$key.'%');
		}
		
		$count = $ArticleModel->where($where)->count();
		$page = $this->page($count, 20);
		
		$articles = $ArticleModel->where($where)
		->order('id DESC')
		->limit($page->firstRow.','.$page->listRows)
		->select();
		
		if($articles) {
			foreach($articles as $newKey => &$newVal) {
				$newVal ['link'] = get_full_url().'/index.php/article/detail/id/'.$newVal ['id'];
			}
		}
		
		$this->assign("list", $articles);
		$this->assign("Page", $page->show('Admin'));
		$this->display();
	}
	
	public function seaWxLink() {
		$this->assign("zixunLink", get_url().'/action/zixun.php?a=list');
		$this->display();
	}
	
	public function add() {
		if(!IS_POST) {
			//跳转到添加单图文页面
			$this->display();
		} else {
			$ArticleModel = D('Article');
			$data = I('post.');
			
			if (!$ArticleModel->create($data, 1)) {
				$this->error($ArticleModel->getError());
			} else {
				$addNewsId = $ArticleModel->add();
				if (!$addNewsId) {
					$this->error($ArticleModel->getError());
				} else {
					$operation = array();
					\Think\Hook::listen('operation', $operation);
					
					$this->success('添加成功', U('/Admin/Article/index'));
				}
			}
		}
	}
	
	public function edit() {
		if(!IS_POST) {
			$id = I ('get.id');
			$ArticleModel = D('Article');
			$item = $ArticleModel->where(array('id' => $id))->find();
			$this->assign("item",$item);
			$this->display();
		} else {
			$ArticleModel = D('Article');
			if (!$ArticleModel->create()) {
				$this->error($ArticleModel->getError());
			} else {
				$result = $ArticleModel->save();
				if (!$result) {
					$this->error($ArticleModel->getError());
				} else {
					$operation = array('operation_object_id' => I('post.id'));
					\Think\Hook::listen('operation', $operation);
					
					$ArticleModel->clearCache(I ('post.id'));
					$this->success('修改成功', U('/Admin/Article/index'));
				}
			}
		}
	}
	
	public function delete() {
		$Model = D('Article');
		
		if (!IS_POST) {
			$id = I ('get.id');
			$result = $OrderModel->where(array('id' => $id))->save(array('status' => 0));
			if ($result) {
				$operation = array('operation_object_id' => $id);
				\Think\Hook::listen('operation', $operation);
				$Model->clearCache($id);
				$this->ajaxReturn(array('status' => 1, 'url' => U('index')));
			} else {
				$this->ajaxReturn(array('status' => 0));
			}
		} else {
			$ids = I ('post.ids');
			if (count($ids) == 1) {
				$where = array('id' => $ids[0]);
				$result = $Model->where($where)->save(array('status' => 0));
			} else {
				$where ['id'] = array('in', implode(',',$ids));
				$result = $Model->where($where)->save(array('status' => 0));
			}
			 
			if (!$result) {
				$this->ajaxReturn(array('status' => 0 ));
			}
			 
			foreach ($ids as $articleId) {
				$operation = array('operation_object_id' => $articleId);
				\Think\Hook::listen('operation', $operation);
				$Model->clearCache($articleId);
			}
			 
			$this->ajaxReturn(array('status' => 1, 'url' => U('index')));
		}
	}
	
	public function ajax_delete_news_image() {
		$news_key = $_GET['news_key'];
		$image_path = $_GET['image_path'];
		if(empty($adminNewsImageService)) {
			$adminNewsImageService = new AdminNewsImageService();
		}
		$deleteFlag = $adminNewsImageService->deleteOneNewsKeyByNewskey($news_key);
		if($deleteFlag) {
			//删除图片
			$news_image = substr($image_path, strrpos($image_path,"/")+1, strlen($image_path));
			$pic_path = dirname(dirname(__FILE__));
			$pic_path = $pic_path."/data/files/news/". $news_image;
			if(file_exists($pic_path)) {
				if(!empty($news_image)){
					unlink($pic_path);
				}
			}
			echo "1";
		} else {
			echo "0";
		}
		exit();
	}
	
	public function ajaxUploadImg() {
		$options = C('ARTICLE_UPLODE_CONFIG');
		$options ['upload_url'] = get_full_url().'/Uploads/Article/';
		$uploadHandler = new UploadHandler($options, false);
		$result = $uploadHandler->post(false);
		$param_name = $options ['param_name'];
		 
		$this->ajaxReturn($result [$param_name] [0]);
	}
	
	public function ajaxDeleteImg() {
		//ajax删除封面图片
		$filename = $_POST['imagename'];
		if(stristr($filename, "http://")) {
			$filename = substr($filename, strrpos($filename,"/")+1, strlen($filename));
		}
		$pic_path = dirname(dirname(__FILE__));
		$pic_path = $pic_path."/data/files/news/". $filename;
		if(file_exists($pic_path)){
			if(!empty($filename)){
				unlink($pic_path);
				echo '1';
			}else{
				echo '删除失败.';
			}
		}
	}

	/**
	 * 根据模板文件生成静态文件
	 * $target_html_file 目标文件
	 * $data 数据
	 */
	function createNewsHtml($target_html_file, $data) {
		//判断上传的图文是否添加了原文链接
		if(empty($data['news_href'])) {
			//模板文件
			$tpl_file = dirname(dirname(__FILE__))."/admin/tpl/content.tpl";
			//echo $tpl_file;
			$t_file = fopen($tpl_file, "r");
			$target_file = fopen(dirname(dirname(__FILE__))."/admin/news/".$target_html_file, "w");
			while (!feof($t_file)) {
				$line_file = fgets($t_file);
				if(stristr($line_file,"<{title}>")) {
					$line_file = str_replace("<{title}>", $data['news_title'], $line_file);
				}
				if(stristr($line_file,"<{date}>")) {
					$line_file = str_replace("<{date}>", date("Y-m-d H:i:s",$data['news_time']), $line_file);
				}
				if(stristr($line_file,"<{content}>")) {
					$news_content = str_replace("\\", "",$data['news_content']);
					$line_file = str_replace("<{content}>", $news_content, $line_file);
					
				}
				if(stristr($line_file,"<{wx_number}>")) {
					$line_file = str_replace("<{wx_number}>", "东辉", $line_file);
				}
				fwrite($target_file, $line_file);
			}
			fclose($t_file);
			fclose($target_file);
		}
	}
	
	/**
	 * 缩略图主函数
	 * @param string $src 图片路径
	 * @param int $w 缩略图宽度
	 * @param int $h 缩略图高度
	 * @return mixed 返回缩略图路径
	 * **/
	
	function resize($src,$w,$h)
	{
		$temp=pathinfo($src);
		$name=$temp["basename"];//文件名
		$dir=$temp["dirname"];//文件所在的文件夹
		$extension=$temp["extension"];//文件扩展名
		$savepath="{$dir}/{$name}";//缩略图保存路径,新的文件名为*.thumb.jpg
	
		//获取图片的基本信息
		$info=getImageInfo($src);
		$width=$info[0];//获取图片宽度
		$height=$info[1];//获取图片高度
		$per1=round($width/$height,2);//计算原图长宽比
		$per2=round($w/$h,2);//计算缩略图长宽比
	
		//计算缩放比例
		if($per1>$per2||$per1==$per2)
		{
			//原图长宽比大于或者等于缩略图长宽比，则按照宽度优先
			$per=$w/$width;
		}
		if($per1<$per2)
		{
			//原图长宽比小于缩略图长宽比，则按照高度优先
			$per=$h/$height;
		}
		$temp_w=intval($width*$per);//计算原图缩放后的宽度
		$temp_h=intval($height*$per);//计算原图缩放后的高度
		$temp_img=imagecreatetruecolor($temp_w,$temp_h);//创建画布
		$im=create($src);
		imagecopyresampled($temp_img,$im,0,0,0,0,$temp_w,$temp_h,$width,$height);
		if($per1>$per2)
		{
			imagejpeg($temp_img,$savepath, 100);
			imagedestroy($im);
			return addBg($savepath,$w,$h,"w");
			//宽度优先，在缩放之后高度不足的情况下补上背景
		}
		if($per1==$per2)
		{
			imagejpeg($temp_img,$savepath, 100);
			imagedestroy($im);
			return $savepath;
			//等比缩放
		}
		if($per1<$per2)
		{
			imagejpeg($temp_img,$savepath, 100);
			imagedestroy($im);
			return addBg($savepath,$w,$h,"h");
			//高度优先，在缩放之后宽度不足的情况下补上背景
		}
	}
	
	function getImageInfo($src)
	{
		return getimagesize($src);
	}
	/**
	 * 创建图片，返回资源类型
	 * @param string $src 图片路径
	 * @return resource $im 返回资源类型
	 * **/
	function create($src)
	{
		$info=getImageInfo($src);
		switch ($info[2])
		{
			case 1:
				$im=imagecreatefromgif($src);
				break;
			case 2:
				$im=imagecreatefromjpeg($src);
				break;
			case 3:
				$im=imagecreatefrompng($src);
				break;
		}
		return $im;
	}
	
	/**
	 * 添加背景
	 * @param string $src 图片路径
	 * @param int $w 背景图像宽度
	 * @param int $h 背景图像高度
	 * @param String $first 决定图像最终位置的，w 宽度优先 h 高度优先 wh:等比
	 * @return 返回加上背景的图片
	 * **/
	function addBg($src,$w,$h,$fisrt="w")
	{
		$bg=imagecreatetruecolor($w,$h);
		$white = imagecolorallocate($bg,255,255,255);
		imagefill($bg,0,0,$white);//填充背景
	
		//获取目标图片信息
		$info=getImageInfo($src);
		$width=$info[0];//目标图片宽度
		$height=$info[1];//目标图片高度
		$img=create($src);
		if($fisrt=="wh")
		{
			//等比缩放
			return $src;
		}
		else
		{
			if($fisrt=="w")
			{
				$x=0;
				$y=($h-$height)/2;//垂直居中
			}
			if($fisrt=="h")
			{
				$x=($w-$width)/2;//水平居中
				$y=0;
			}
			imagecopymerge($bg,$img,$x,$y,0,0,$width,$height,100);
			imagejpeg($bg,$src,100);
			imagedestroy($bg);
			imagedestroy($img);
			return $src;
		}
	
	}
}